/**
 * 给定数组，只能操作一次：
 * 选择[s, e]段将其全部改为某个数值，数值可自定
 * 要求将数组所有元素改为一样，问[s, e]最短是多少
 * 只有3种可能性：从头开始改、从尾开始改，头尾合适从中间开始改
 * 判断一下即可
 */
#include <bits/stdc++.h>
#include <bits/extc++.h>
using namespace std;

using llt = long long;
using vi = vector<int>;

int N;
vi A;

int proc(){
    int k = 0;
    while(k < N and A[k] == A[0]) ++k;
    if(k == N) return 0;

    int ans = N - k;

    int o = N - 1;
    while(o >= 0 and A[o] == A[N - 1]) --o;

    ans = min(ans, o + 1);
    if(A[0] == A[N - 1]) ans = min(ans, o - k + 1);
    return ans;
}

void work(){
    cin >> N;
    A.assign(N, {});
    for(auto & i : A) cin >> i;
    cout << (proc()) << "\n";     
}

int main(){
#ifndef ONLINE_JUDGE
    freopen("z.txt", "r", stdin);
#endif
    ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
    int nofkase = 1;
	cin >> nofkase;
	while(nofkase--){	
        work();
	}
    return 0;
}